package com.tencent.sr.iris.activity.service.task;


import com.tencent.sr.iris.activity.interfaces.request.task.GroupTaskListNewRequest;
import com.tencent.sr.iris.activity.interfaces.request.task.GroupTaskPopRequest;
import com.tencent.sr.iris.activity.interfaces.request.task.GroupTaskRewardDetailRequest;
import com.tencent.sr.iris.activity.interfaces.request.task.GroupTaskRewardRequest;
import com.tencent.sr.iris.activity.interfaces.request.task.MarketTaskCalenderRequest;
import com.tencent.sr.iris.activity.interfaces.response.group.task.GroupTaskConfigResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.task.GroupTaskListResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.task.GroupTaskPopResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.task.GroupTaskRewardDetailResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.task.GroupTaskRewardResponse;
import com.tencent.sr.rmall.common.request.PaginationRequest;
import com.tencent.sr.rmall.common.response.PaginationResponse;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface GroupTaskService {

    GroupTaskRewardResponse taskReward(GroupTaskRewardRequest request);

    PaginationResponse<GroupTaskRewardDetailResponse> pageRewardList(
            PaginationRequest<GroupTaskRewardDetailRequest> request);

    GroupTaskConfigResponse config();

    GroupTaskPopResponse pop(GroupTaskPopRequest request);

    /**
     * 进行中任务列表
     *
     * @param request
     * @return
     */
    PaginationResponse<GroupTaskListResponse> listInProgress(
            @RequestBody @Validated PaginationRequest<GroupTaskListNewRequest> request);

    /**
     * 已完成任务列表
     *
     * @param request
     * @return
     */
    PaginationResponse<GroupTaskListResponse> listEnded(
            @RequestBody @Validated PaginationRequest<GroupTaskListNewRequest> request);

    List<GroupTaskListResponse> marketCalendarList(MarketTaskCalenderRequest request);

}
